home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1998 / MacHack 1998.toast / Sessions / STL / Slides / STL2.cp < prev    next >
Text File  |  1998-06-15  |  1KB  |  50 lines

  1. // STL2.cp
  2. #include <iostream>
  3. #include <vector>
  4. #include <deque>
  5. using namespace std;
  6.  
  7. __MSL_FIX_ITERATORS__(char *);    // Not req. w/built ins in CWPro1
  8.  
  9. int main()
  10. {
  11.     vector<char *>    v;        // OK in CW Pro 3
  12. //    vector<char *, allocator<char *> >    v;    // Required in CWPro1
  13.  
  14.     assert(v.empty());
  15.     v.push_back("sleep");
  16.     v.insert(v.end(), "was");
  17.     assert(v.size() == 2);
  18.     v.push_back("for");
  19.     v.push_back("the");
  20.     v.push_back("weak");
  21.     v.push_back("or");
  22.     v.pop_back();
  23.     v.push_back("and");
  24.     v.push_back("sickly");
  25.     v[1] = "is";        // Used to replace existing: "is" for "was"
  26. //    v[7] = "DOS users";    // Cannot use this notation to add elements.
  27.  
  28.     vector<char *>::iterator vi;    // Not OK in CWPro1
  29. //    vector<char *, allocator<char *> >::iterator vi;
  30.     for (vi = v.begin(); vi != v.end(); ++vi)
  31.     {
  32.         cout << (*vi) << " ";
  33.     }
  34.     cout << endl;
  35.  
  36.     typedef deque<char *, allocator<char *> > MyDeque;
  37. //    MyDeque    d((v.begin()), (v.end()));    // was OK in CWPro1
  38.     MyDeque    d(v.size(), "");            // This ugly work around
  39.     copy(v.begin(), v.end(), d.begin());// is required in CW Pro 3
  40.  
  41.     d.erase(d.end() - 3, d.end() - 1);
  42.     d.push_front("MacHack:");
  43.     ostream_iterator<char *>out(cout, " ");    // Not OK in CWPro1.
  44. //    ostream_iterator<char *, char, char_traits<char> >    out(cout, " ");
  45.     copy(d.begin(), d.end(), out); cout << endl;
  46. }
  47. // sleep is for the weak and sickly 
  48. // MacHack: sleep is for the sickly 
  49.  
  50.